package com.fzq.config;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 敏感数据脱敏注解
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Sensitive {

    /**
     * 脱敏类型
     */
    SensitiveType type() default SensitiveType.PHONE;

    /**
     * 自定义正则表达式（当type为CUSTOM时使用）
     */
    String pattern() default "";

    /**
     * 脱敏类型枚举
     */
    enum SensitiveType {
        PHONE,      // 手机号
        ID_CARD,    // 身份证
        EMAIL,      // 邮箱
        BANK_CARD,  // 银行卡
        NAME,       // 姓名
        ADDRESS,    // 地址
        CUSTOM      // 自定义
    }
}
